// src/server/server.h
#ifndef SERVER_H
#define SERVER_H

#include <string>
#include <vector>
#include <pthread.h>
#include "../common/user.h"

// 前向声明ClientHandler类，避免循环依赖
class ClientHandler;

class ChatServer {
private:
    int server_socket;
    int port;
    bool running;
    UserManager userManager;
    std::vector<ClientHandler*> clients; // 存储所有客户端处理器

public:
    ChatServer(int port);
    ~ChatServer();
    
    bool start();      // 启动服务器
    void stop();       // 停止服务器
    void accept_clients(); // 接受客户端连接
    void broadcast_message(const std::string& message, int sender_socket); // 广播消息
    void send_message(int client_socket, const std::string& message); // 发送消息给特定客户端
    void remove_client(int client_socket); // 移除客户端
    void add_client_handler(ClientHandler* handler); // 添加客户端处理器
};

#endif // SERVER_H    